/**
 * 通过递归根据用户角色过滤出动态路由
 * @param {*} asyncRoutes 未过滤的动态路由
 * @param {*} role 当前用户角色
 * @returns 过滤后的动态路由
 */
export function filterAsyncRoutes(asyncRoutes, role) {
  const res = []

  asyncRoutes.forEach(route => {
    const tmp = { ...route }
    if (hasPermission(tmp, role)) {
      if (tmp.children) {
        tmp.children = filterAsyncRoutes(tmp.children, role)
      }
      res.push(tmp)
    }
  })

  return res
}

/**
 * 判断当前用户角色是否有访问该路由的权限
 * @param {*} role 当前用户角色
 * @param {*} route 需要判断的路由
 * @returns 当前用户角色有访问该路由权限true 没有false
 */
function hasPermission(route, role) {
  return route.meta && route.meta.roles ? route.meta.roles.includes(role) : true
}
